package com.doupi.partner.service;

import com.doupi.partner.model.Profit;
import com.doupi.partner.util.Pagination;
import org.apache.ibatis.session.RowBounds;

import java.util.List;
import java.util.Map;

public interface ProfitService {
	int deleteByPrimaryKey(Long id);

	int insert(Profit record);

	Profit selectByPrimaryKey(Long id);

	int updateByPrimaryKeySelective(Profit record);

	int countProfit(Profit profit);

	List<Profit> queryProfits(Profit profit, RowBounds rowBounds);

	List<Profit> selectProfitForUpdate(Profit profit);

	Profit selectProfitForUpdateByPrimaryKey(Long id);

	Pagination<Profit, Profit> queryProfits(Pagination<Profit, Profit> pagination);

	int countProfitWithAnnotation(Profit profit);

	List<Profit> queryProfitWithAnnotation(Profit profit, RowBounds rowBounds);

	Pagination<Profit, Profit> queryProfitWithAnnotation(Pagination<Profit, Profit> pagination);

	/**
	 * 首页汇总
	 *
	 * @param administratorId
	 *            合伙人id
	 * @return 汇总数据
	 */
	Map<String, Object> topStatistics(Long administratorId);

	/**
	 * 小时累计收益
	 *
	 * @param administratorId
	 *            合伙人ID
	 * @param beginDay
	 *            开始距离今天天数 0表示今天 1昨天...
	 * @param endDay
	 *            结束距离今天天数 0表示今天 1昨天...
	 * @return 收益图表数据
	 */
	List<Map<String, Object>> accumulateStatisticsGroupByHour(Long administratorId, Integer beginDay, Integer endDay);

	/**
	 * 历史小时收益
	 *
	 * @param administratorId
	 *            合伙人ID
	 * @param beginDay
	 *            开始距离今天天数 0表示今天 1昨天...
	 * @param endDay
	 *            结束距离今天天数 0表示今天 1昨天...
	 * @return 收益图表数据
	 */
	List<Map<String, Object>> historyStatisticsGroupByHour(Long administratorId, Integer beginDay, Integer endDay);

	/**
	 * 历史小时收益
	 *
	 * @param administratorId
	 *            合伙人ID
	 * @param beginDay
	 *            开始距离今天天数 0表示今天 1昨天...
	 * @param endDay
	 *            结束距离今天天数 0表示今天 1昨天...
	 * @return 收益图表数据
	 */
	List<Map<String, Object>> historyStatisticsGroupByDate(Long administratorId, Integer beginDay, Integer endDay);

	/**
	 *
	 * 昨日收益排行
	 **
	 * @param top
	 *            前几名
	 *
	 * @return 排名收益数据
	 */
	List<Map<String, Object>> queryYesterdayProfitRank(Integer top);
}
